package cn.b.sky.mes.mm.service;

import java.util.List;

import cn.b.sky.mes.mm.model.PullStrategy;
import cn.b.sky.mes.mm.model.condition.PullStrategyCondition;

public interface PullStrategyService {

  /**
   * 
   * <strong>Title : pullStrategyListByCondition<br></strong>
   * <strong>Description : </strong>拉动策略查询<br> 
   * <strong>Create on : 2016-9-10 下午1:37:24<br></strong>
   * <p>
   * @param condition
   * @return
   * List<PullStrategy>
   * @throws 
   * @author JinQuan.Fu<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<PullStrategy> pullStrategyListByCondition(PullStrategyCondition condition);

  /**
   * 
   * <strong>Title : pullStrategyCountByCondition<br></strong>
   * <strong>Description : </strong>拉动策略记录<br> 
   * <strong>Create on : 2016-9-10 下午1:37:41<br></strong>
   * <p>
   * @param condition
   * @return
   * int
   * @throws 
   * @author JinQuan.Fu<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  int pullStrategyCountByCondition(PullStrategyCondition condition);

  /**
   * 
   * <strong>Title : insertPullStrategy<br></strong>
   * <strong>Description : </strong>拉动策略添加<br> 
   * <strong>Create on : 2016-9-10 下午1:37:56<br></strong>
   * <p>
   * @param pullStrategy
   * void
   * @throws 
   * @author JinQuan.Fu<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void insertPullStrategy(PullStrategy pullStrategy);

  /**
   * 
   * <strong>Title : updatePullStrategy<br></strong>
   * <strong>Description : </strong>拉动策略修改<br> 
   * <strong>Create on : 2016-9-10 下午1:38:05<br></strong>
   * <p>
   * @param pullStrategy
   * void
   * @throws 
   * @author JinQuan.Fu<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  void updatePullStrategy(PullStrategy pullStrategy);

  /**
   * 
   * <strong>Title : detelePullStrategy<br></strong>
   * <strong>Description : </strong>拉动策略删除<br> 
   * <strong>Create on : 2016-9-10 下午1:38:18<br></strong>
   * <p>
   * @param siteCode
   * @param pullStrategyCode
   * @return
   * String
   * @throws 
   * @author JinQuan.Fu<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  String detelePullStrategy(String siteCode, String pullStrategyCode);

  /**
   * 
   * <strong>Title : getPullStrategy<br></strong>
   * <strong>Description : </strong>获取拉动策略<br> 
   * <strong>Create on : 2016-9-10 下午1:38:30<br></strong>
   * <p>
   * @param siteCode
   * @param pullStrategyCode
   * @return
   * PullStrategy
   * @throws 
   * @author JinQuan.Fu<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  PullStrategy getPullStrategy(String siteCode, String pullStrategyCode);

  /**
   * 
   * <strong>Title : selectAllPullStrategy<br></strong>
   * <strong>Description : </strong>查询所有拉动策略<br> 
   * <strong>Create on : 2016年9月12日 上午10:00:54<br></strong>
   * <p>
   * @param isContainLock
   * @return
   * List<PullStrategy>
   * @throws 
   * @author zhaoxin01<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  List<PullStrategy> selectAllPullStrategy(boolean isContainLock);

  /**
   * 
   * <strong>Title : getPullStrategyByMaterial<br></strong>
   * <strong>Description : </strong>获取物料的拉动策略<br> 
   * <strong>Create on : 2016年9月18日 上午10:02:49<br></strong>
   * <p>
   * @param siteCode
   * @param materialCode
   * @return
   * PullStrategy
   * @throws 
   * @author dapeng.li<br>
   * @version <strong>v1.0.0</strong><br>
   * <br>
   * <strong>修改历史:</strong><br>
   * 修改人 | 修改日期 | 修改描述<br>
   * -------------------------------------------<br>
   * <br>
   * <br>
   */
  PullStrategy getPullStrategyByMaterial(String siteCode, String materialCode);
}
